package main

import "fmt"

func uniquePaths(m,n int) int{
	dp :=make([][]int,m)
	for i:=range dp {
		//初始化所有行第一个为1
		dp[i] =make([]int,n)
		//第0行第0个 = 1 ;第1行第0个 = 1 ;第2行第0个 = 1
		dp[i][0] =1
	}
	//初始化所有列的第一个为1
	//第0行 第0列，第1列，第2列...= 1
	for j :=0 ;j<n ;j++{
		dp[0][j] =1
	}
	//
	for i:=1;i<m;i++{
		for j:=1;j<n;j++{
			//比如求1行2列
			//[1][2] = [1][1]+[0][2]   下面刚好是反的
			dp[i][j] =dp[i-1][j]+dp[i][j-1]
		}
	}
	//这里的m-1，n-1也就是实际的位置，别忘了[0,0]开始的
	return dp[m-1][n-1]
}

func main(){
	fmt.Println(uniquePaths(3,7))
}